package com.softtown.modules.sys.dao;

import com.softtown.common.dao.BaseDao;
import com.softtown.modules.sys.entity.CompSysUserEmplBasicsEntity;
import com.softtown.modules.sys.entity.CompSysUserEmplEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * @author: Dingyayong
 * @Date: 2019/6/4 09:53
 * @Description:
 */
@Mapper
@Component(value = "CompSysUserEmplDao")
public interface CompSysUserEmplDao extends BaseDao<CompSysUserEmplEntity> {

    /**
     * 找出公司所有员工
     *
     * @param compId
     * @return
     * @author Dingyayong
     * @date 2019/6/6 10:23
     */
    List<CompSysUserEmplEntity> findAllCompEmpl(Long compId);

    /**
     * 找出公司用户对应的员工
     *
     * @param compId
     * @param userId
     * @return
     * @author Dingyayong
     * @date 2019/6/6 10:24
     */
    CompSysUserEmplEntity findByCompIdAndUserId(@Param("compId") Long compId, @Param("userId") Long userId);

    /**
     * 找出公司用户对应的员工
     *
     * @param compId
     * @param emplId
     * @return
     * @author Dingyayong
     * @date 2019/6/6 10:24
     */
    CompSysUserEmplEntity findByCompIdAndEmplId(@Param("compId") Long compId, @Param("emplId") Long emplId);

    /**
     * 更新数据
     * @param compSysUserEmplEntity
     * @return boolean
     * @Author fuming
     * @Date 2020/5/26 17:41
     */
    boolean updateUserEmpl(CompSysUserEmplEntity compSysUserEmplEntity);

    /**
     * 根据公司id和参数进行查询
     * @param compId
     * @param param
     * @return java.util.List<com.softtown.modules.sys.entity.CompSysUserEmplEntity>
     * @Author fuming
     * @Date 2020/5/26 17:41
     */
    List<CompSysUserEmplEntity> findUserPage(@Param("compId") Long compId, @Param("param") String param);

    /**
     * 查找用户在公司的信息
     *
     * @param userId
     * @return List<CompSysUserEmplEntity>
     * @author Dingyayong
     * @date 2019-07-03 10:09
     */
    List<CompSysUserEmplEntity> findCompByUserId(@Param("userId") Long userId);

    /**
     * 根据公司Id和用户Id获取员工基本信息
     *
     * @param compId
     * @param userId
     * @return
     * @author Dingyayong
     * @date 2019-09-12 00:52
     */
    CompSysUserEmplBasicsEntity selectUserIdInfo(@Param("compId") Long compId, @Param("userId") Long userId);

    /**
     * 通过公司id和用户id查出员工姓名
     *
     * @param compId
     * @param userId
     * @return java.lang.String
     * @author fuming
     * @date 2019/11/8 14:38
     */
    String selectEmplNameByCompIdAndUserId(@Param("compId") Long compId, @Param("userId") Long userId);

    /**
     * 获取该公司用户激活总数
     * @param compId
     * @return java.lang.Integer
     * @Author fuming
     * @Date 2020/5/26 17:42
     */
    Integer getActiveUser(Long compId);

    /**
     * op 模式下获取所有用户数
     * @return
     */
    int getAllUserCount();
}
